import { User } from "screens/ProjectList/SearchPanel"

// 在真实环境中，如果使用firebase这种第三方auth服务的话，本文件夹不需要开发者开发
const localStorageKey = '__auth_probider_token__'
const apiUrl = process.env.REACT_APP_API_URL

export const getToken = () =>  window.localStorage.getItem(localStorageKey)

export const handleUserResponse = ({ user }: { user: User }) => {
  window.localStorage.setItem(localStorageKey, user.token || '')
  return user
}

export const login = (data:{username:string,password:string}) =>{
  return fetch(`${apiUrl}/login`, {
    method: 'POST',
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(data)
  }).then(async (response: Response) => {
    if (response.ok) {
      return handleUserResponse(await response.json())
    } else {
      return Promise.reject(data)
    }
  }
  )
}

export const register = (data:{username:string,password:string})=>{
  return fetch(`${apiUrl}/register`,{
    method:'POST',
    headers:{"Content-Type":"application/json"},
    body:JSON.stringify(data)
  }).then(
   async (response:Response) => {
    if(response.ok){
      return handleUserResponse(await response.json())
    }else{
      return Promise.reject(data)
    }
   }
  )
}

export const logout = async() =>{ 
   window.localStorage.removeItem(localStorageKey)
}